package model

import (
	"time"

	"gorm.io/gorm"
)

// Candidate 应聘者模型
type Candidate struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 主键ID，唯一标识
	CreatedAt time.Time      `json:"created_at"`           // 创建时间，记录添加时间
	UpdatedAt time.Time      `json:"updated_at"`           // 更新时间，记录修改时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间，用于标记删除

	UserID           uint       `gorm:"not null;uniqueIndex" json:"user_id"` // 关联用户ID，与用户表关联
	Name             string     `gorm:"size:50;not null" json:"name"`        // 应聘者姓名
	Phone            string     `gorm:"size:20;index" json:"phone"`          // 联系电话，添加索引便于搜索
	Email            string     `gorm:"size:100;index" json:"email"`         // 电子邮箱，添加索引便于搜索
	Gender           string     `gorm:"size:10;not null" json:"gender"`      // 性别，字符串类型更直观
	Birthday         *time.Time `json:"birthday"`                            // 出生日期，使用指针允许NULL
	Education        string     `gorm:"size:50" json:"education"`            // 学历
	GraduationSchool string     `gorm:"size:100" json:"graduation_school"`   // 毕业院校
	Major            string     `gorm:"size:100" json:"major"`               // 专业
	ResumeURL        string     `gorm:"size:200" json:"resume_url"`          // 简历URL，存储简历文件的路径
	Status           int        `gorm:"not null;default:0" json:"status"`    // 应聘状态，默认值为0(待审核)
	PositionID       uint       `gorm:"not null" json:"position_id"`         // 关联的职位ID
	ApplyDate        time.Time  `gorm:"not null" json:"apply_date"`          // 应聘日期，记录应聘的时间

	// 关联
	Position Position `gorm:"foreignKey:PositionID" json:"position,omitempty"` // 关联职位信息
	User     User     `gorm:"foreignKey:UserID" json:"user,omitempty"`         // 关联用户信息
}
